{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import svm\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import classification_report"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 载入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>density</th>\n",
       "      <th>sugar</th>\n",
       "      <th>good</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.697</td>\n",
       "      <td>0.460</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.774</td>\n",
       "      <td>0.376</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.634</td>\n",
       "      <td>0.264</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.608</td>\n",
       "      <td>0.318</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.556</td>\n",
       "      <td>0.215</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   density  sugar  good\n",
       "0    0.697  0.460     1\n",
       "1    0.774  0.376     1\n",
       "2    0.634  0.264     1\n",
       "3    0.608  0.318     1\n",
       "4    0.556  0.215     1"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv(\"../data/watermelon.csv\")\n",
    "data.columns = [\"id\", \"density\", \"sugar\", \"good\"]\n",
    "data = data[[\"density\", \"sugar\", \"good\"]]\n",
    "data['good'] = data['good'].apply(lambda x: 1 if x == '是' else 0)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data.values[:, :2]\n",
    "y = data.values[:, 2]\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Linear Kernel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=5, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='scale', kernel='linear',\n",
       "    max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "    tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clfL = svm.SVC(C=5, kernel='linear')\n",
    "clfL.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training data: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.60      1.00      0.75         9\n",
      "         1.0       0.00      0.00      0.00         6\n",
      "\n",
      "    accuracy                           0.60        15\n",
      "   macro avg       0.30      0.50      0.37        15\n",
      "weighted avg       0.36      0.60      0.45        15\n",
      "\n",
      "Test data: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.00      0.00      0.00       0.0\n",
      "         1.0       0.00      0.00      0.00       2.0\n",
      "\n",
      "    accuracy                           0.00       2.0\n",
      "   macro avg       0.00      0.00      0.00       2.0\n",
      "weighted avg       0.00      0.00      0.00       2.0\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/shensir/anaconda3/envs/ML/lib/python3.6/site-packages/sklearn/metrics/_classification.py:1272: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n",
      "/home/shensir/anaconda3/envs/ML/lib/python3.6/site-packages/sklearn/metrics/_classification.py:1272: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n",
      "/home/shensir/anaconda3/envs/ML/lib/python3.6/site-packages/sklearn/metrics/_classification.py:1272: UndefinedMetricWarning: Recall and F-score are ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n"
     ]
    }
   ],
   "source": [
    "# 训练集\n",
    "print(\"Training data: \")\n",
    "y_train_pred = clfL.predict(X_train)\n",
    "print(classification_report(y_train, y_train_pred))\n",
    "# 测试集\n",
    "print(\"Test data: \")\n",
    "y_pred = clfL.predict(X_test)\n",
    "print(classification_report(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "def kernelPlot(X, Y, clf):\n",
    "    # plot the line, the points, and the nearest vectors to the plane\n",
    "    plt.figure(figsize=(10, 4))\n",
    "    plt.clf()\n",
    "\n",
    "    plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80,\n",
    "                facecolors='none', zorder=10, edgecolors='k')\n",
    "    plt.scatter(X[:, 0], X[:, 1], c=Y, zorder=10, cmap=plt.cm.Paired,\n",
    "                edgecolors='k')\n",
    "\n",
    "    plt.axis('tight')\n",
    "    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n",
    "    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 3\n",
    "\n",
    "    XX, YY = np.mgrid[x_min:x_max:200j, y_min:y_max:200j]\n",
    "    Z = clf.decision_function(np.c_[XX.ravel(), YY.ravel()])\n",
    "\n",
    "    # Put the result into a color plot\n",
    "    Z = Z.reshape(XX.shape)\n",
    "    plt.pcolormesh(XX, YY, Z > 0, cmap=plt.cm.Paired)\n",
    "    plt.contour(XX, YY, Z, colors=['k', 'k', 'k'], linestyles=['--', '-', '--'],\n",
    "                levels=[-.5, 0, .5])\n",
    "\n",
    "    plt.xlim(x_min, x_max)\n",
    "    plt.ylim(y_min, y_max)\n",
    "\n",
    "    plt.xticks(())\n",
    "    plt.yticks(())\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAADrCAYAAACGnPcnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3dd3gU1eLG8e/sZrPplRB66L13BFSUKqiAoICCDRQL6EW9eu3l2r3WKzYU9FIUFWz0YqFLl957CSGQ3rPz+2M3m91sUFFU/M37eR6emD1zzpw5s+6+58xs1jBNExERERGrsP3VHRARERH5Myn8iIiIiKUo/IiIiIilKPyIiIiIpSj8iIiIiKUo/IiIiIilBJ3NxlHOILNihOOP6ouIiIjIObPnVN5J0zQTyj5+VuGnYoSDl3vVPGedEhEREfmjXDlt+4HyHtdlLxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEUhR8RERGxFIUfERERsRSFHxEREbEU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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kernelPlot(X, y, clfL)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RBF kernel\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=2, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',\n",
       "    max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "    tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf = svm.SVC(C=2, kernel='rbf')\n",
    "clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training data: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       1.00      1.00      1.00         9\n",
      "         1.0       1.00      1.00      1.00         6\n",
      "\n",
      "    accuracy                           1.00        15\n",
      "   macro avg       1.00      1.00      1.00        15\n",
      "weighted avg       1.00      1.00      1.00        15\n",
      "\n",
      "Test data: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.00      0.00      0.00         0\n",
      "         1.0       1.00      0.50      0.67         2\n",
      "\n",
      "    accuracy                           0.50         2\n",
      "   macro avg       0.50      0.25      0.33         2\n",
      "weighted avg       1.00      0.50      0.67         2\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/shensir/anaconda3/envs/ML/lib/python3.6/site-packages/sklearn/metrics/_classification.py:1272: UndefinedMetricWarning: Recall and F-score are ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n"
     ]
    }
   ],
   "source": [
    "# 训练集\n",
    "print(\"Training data: \")\n",
    "y_train_pred = clf.predict(X_train)\n",
    "print(classification_report(y_train, y_train_pred))\n",
    "# 测试集\n",
    "print(\"Test data: \")\n",
    "y_pred = clf.predict(X_test)\n",
    "print(classification_report(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "def kernelPlot(X, Y, clf):\n",
    "    # plot the line, the points, and the nearest vectors to the plane\n",
    "    plt.figure(figsize=(10, 4))\n",
    "    plt.clf()\n",
    "\n",
    "    plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80,\n",
    "                facecolors='none', zorder=10, edgecolors='g')\n",
    "    plt.scatter(X[:, 0], X[:, 1], c=Y, zorder=10, cmap=plt.cm.Paired,\n",
    "                edgecolors='k')\n",
    "\n",
    "    plt.axis('tight')\n",
    "    x_min, x_max = X[:, 0].min() - 0.1, X[:, 0].max() + 0.1\n",
    "    y_min, y_max = X[:, 1].min() - 0.1, X[:, 1].max() + 0.2\n",
    "\n",
    "    XX, YY = np.mgrid[x_min:x_max:200j, y_min:y_max:200j]\n",
    "    Z = clf.decision_function(np.c_[XX.ravel(), YY.ravel()])\n",
    "\n",
    "    # Put the result into a color plot\n",
    "    Z = Z.reshape(XX.shape)\n",
    "    plt.pcolormesh(XX, YY, Z > 0, cmap=plt.cm.Paired)\n",
    "    plt.contour(XX, YY, Z, colors=['k', 'k', 'k'], linestyles=['--', '-', '--'],\n",
    "                levels=[-.5, 0, .5])\n",
    "\n",
    "    plt.xlim(x_min, x_max)\n",
    "    plt.ylim(y_min, y_max)\n",
    "\n",
    "    plt.xticks(())\n",
    "    plt.yticks(())\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kernelPlot(X, y, clf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ML",
   "language": "python",
   "name": "ml"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
